
runobj=null;

var sportObj={
    //当前位置
    left:0,top:0,
    //运动趋势true代表向下，false代表向上
    trend:true,
    //运动频率
    rate:100,
    //运动速度
    speed:15,
    //角度
    angle:90
};

var nextStep={
    //x轴目标值
    x:0,
    //y轴目标值
    y:0
};

var defaultpar={
    wallleft:0,
    ballleft:0,
    ballTop:0
}


var wall={x:0,y:0,e:null};

var x, y; //鼠标相对与div左边，上边的偏移
var isDrop = false; //移动状态的判断鼠标按下才能移动

//一次函数计算公式
function calculate()
{
    var mx=sportObj.trend ? sportObj.speed :-sportObj.speed;
    console.log("当前nextStep.x"+nextStep.x+" nextStep.y:"+nextStep.y+ " 移动步长："+mx+ " 当前角度："+sportObj.angle);
    nextStep.x=mx*Math.cos(sportObj.angle*Math.PI/180)+sportObj.left;
    nextStep.y=mx*Math.sin(sportObj.angle*Math.PI/180)+sportObj.top;
    console.log("最新nextStep.x"+nextStep.x+" nextStep.y"+nextStep.y);
}

//移动
function moveobj() {
    //
    if(nextStep.x<0 || nextStep.x>958){
        if (nextStep.x < 0) {
            sportObj.left = 0;
        }
        if(nextStep.x>958)
            {sportObj.left=958;}
    }
    else
   {
       sportObj.left=nextStep.x;
   }

    if(nextStep.y<0 || nextStep.y>492)
    {
        if(nextStep.y<0)
       {
           sportObj.top=0;
       }
        if(nextStep.y>492){
       sportObj.top=492;
      }
    }
    else
   {sportObj.top=nextStep.y;}

   var ball=document.getElementById("ball");

   ball.style.top=sportObj.top+"px";
   ball.style.left=sportObj.left+"px";
   //console.log("left:"+ball.offsetLeft+" top:"+ball.offsetTop+" wall.x:"+wall.x+ "wall.y:"+wall.y);
   if(sportObj.top>=492)
   {
       //当到底时判断是否碰到了墙
       if(sportObj.left<(wall.x+25) || sportObj>(wall.x+wall.e.offsetWidth-25))
       {
            stopgame() ;
       }
   }
}

//转向判断
function isturn() {

    //当前趋势
    var currentTrend=sportObj.trend;
    //当前角度
    var currentAngle=sportObj.angle;
    //碰到左边了，调角度
    if(sportObj.left==0 || sportObj.left==958)
    {

        sportObj.angle=180-currentAngle;

    }
    //碰到顶边了，调趋势
    if(sportObj.top<=0 || sportObj.top>=492)
    {
        if(sportObj.top<=0)
        {
            sportObj.trend=true;

            if(currentAngle<90)
            {
                //如果小于90度就是加加90度
                sportObj.angle=180-sportObj.angle;
            }
            else
            {
                sportObj.angle-=90;
            }


            //console.log(" 偏转角度："+sportObj.angle);
        }
        if(sportObj.top>=492)
        {
            sportObj.trend=false;
            if(currentAngle===90){
                //加减随机角度

                //得到随机数
                var radNumber=Math.random();

                //console.log("随机数："+radNumber);

                //调用向左边向右边弹的算法
                var rate=getTrend(radNumber);
                if(rate===0)
                {
                    //向左
                    sportObj.angle=90*(radNumber);
                    if(sportObj.angle<45)sportObj.angle*=1.2;
                }
                else {
                    //向右
                    sportObj.angle=90*(1+radNumber);
                    if(sportObj.angle>135)sportObj.angle*=0.85;

                }

            }
            else
            {
                    sportObj.angle=180-sportObj.angle;
            }

        }

    }

}

//向左边向右边弹的算法
function getTrend(rad) {
  return parseInt(rad*100)%2;
}

//结束游戏
function stopgame() {

    clearInterval(runobj);
    alert("本次闯关失败，游戏结束");
    document.getElementById("fixbutton").innerText="开始游戏";
    wall.e.style.left=defaultpar.wallleft+"px";
    document.getElementById("ball").style.left=defaultpar.ballleft+"px";
    document.getElementById("ball").style.top=0+"px";
    sportObj.angle=90;
    sportObj.trend=true;

}

function startgame()
{
    wallLoad();

    if(defaultpar.ballleft===0)
    {
        defaultpar.ballleft=document.getElementById("ball").offsetLeft;
        defaultpar.wallleft=document.getElementById("wallimg").offsetLeft;
    }

    if(document.getElementById("fixbutton").innerText==="结束游戏")
    {
        clearInterval(runobj);
        document.getElementById("fixbutton").innerText="开始游戏";

    }
    else {

        var ball=document.getElementById("ball");
        //var wall=document.getElementById("wall");

        sportObj.top=nextStep.y=ball.offsetTop;
        sportObj.left=nextStep.x=ball.offsetLeft;

        runobj=setInterval(f,sportObj.rate);
        document.getElementById("fixbutton").innerText="结束游戏";

    }

}

function f() {
    //.log("call calculate()");
    calculate();
    //console.log("call moveobj()");
    moveobj();
    //console.log("call isturn()");
    isturn();
}
function wallLoad() {
//确定墙的当前位置
    var e1= document.getElementById("wallimg");
    wall.x=e1.offsetLeft;
    wall.y=e1.offsetTop;
    wall.e=e1;
    e1.onmousedown = function(e) {
                var e = e || window.event; //要用event这个对象来获取鼠标的位置
                x = e.clientX - e1.offsetLeft;
                isDrop = true; //设为true表示可以移动
            }
     document.onmousemove = function(e) {
                //是否为可移动状态                　　　　　　　　　　　 　　　　　　　
                if(isDrop) {　　　　
                    var e = e || window.event;                    　　
                    var moveX = e.clientX - x; //得到距离左边移动距离                　　

                    //可移动最大距离
                    var maxX = document.getElementsByClassName("gamewindow").item(0).clientWidth - e1.offsetWidth;

                    moveX=Math.min(maxX, Math.max(0,moveX));

                    e1.style.left = moveX + "px";　　
                    wall.x=moveX;
                    //console.log("墙位置：x:"+wall.x+ " y:"+wall.y+" 墙右位置："+ (wall.x+e1.offsetWidth));　　　　　
                } else {
                    return;　　　　　　　　　　
                }

            }

            document.onmouseup = function() {
                isDrop = false; //设置为false不可移动
            }

    console.log("墙位置：x:"+wall.x+ " y:"+wall.y);
}
